"""
AI 模块 - 对外服务
"""
from axiom_boot.conf.manager import Settings
from axiom_boot.di.decorators import service
from axiom_boot.di.dependency import autowired

from axiom_boot.ai.interfaces import ILLMInvoker
from axiom_boot.ai.impl.langchain.invoker_impl import LangchainInvoker


@service()
class AIProvider:
    """
    AI 模块的统一服务提供者。

    这是一个工厂服务，负责根据全局配置，创建并提供
    各种 AI 能力的默认实现实例。
    """
    def __init__(self, settings: Settings, invoker: LangchainInvoker):
        self._settings = settings
        self._invoker = invoker

    def get_invoker(self) -> ILLMInvoker:
        """
        获取默认的 LLM 调用器实例。

        它会读取配置中的 `ai.default_provider` 来决定实例化哪个
        具体的实现。实例会被缓存以供后续调用。
        """
        # 验证配置的正确性
        provider = self._settings.langchain.default_provider.lower()
        if provider == "langchain":
            return self._invoker
        else:
            raise ValueError(f"Unsupported AI provider: {provider}") 